import java.util.ArrayList;

/**
 * 构建模式（Builder Pattern）是一种创建型设计模式，它提供了一种将复杂对象的构建过程和表示分离的实现方式。构建模式将对象的构建过程和表示分离，使得同样的构建过程可以创建不同的表示。
 *
 * 构建模式通常包含以下几个部分：
 *
 * 产品（Product）：被构建的复杂对象。
 * 建造者（Builder）：创建产品对象的组件。
 * 客户端代码（Client Code）：使用建造者创建产品对象。
 */
public class BuilderPattern {
    public static void main(String[] args) {
        Builder builder = new Builder();
        builder.buildPartA("a").buildPartB("b");
        System.out.println(builder.getProduct());
        ArrayList<Object> list = new ArrayList<>();
    }
}

//产品类
class Product {
    String partA;
    String partB;

    public String getPartA() {
        return partA;
    }
    
    public String getPartB() {
        return partB;
    }

    public Product(String partA, String partB) {
        this.partA = partA;
        this.partB = partB;
    }

    @Override
    public String toString() {
        return "Product{" +
                "partA='" + partA + '\'' +
                ", partB='" + partB + '\'' +
                '}';
    }
}

//建造者:用于创建产品
class Builder {
    private Product product;

    public Builder() {
        this.product = new Product("","");
    }

    public Builder buildPartA(String a) {
        this.product.partA = a;
        System.out.println("Building Part A");
        return this;
    }

    public Builder buildPartB(String b) {
        this.product.partB = b;
        System.out.println("Building Part B");
        return this;
    }

    public Product getProduct() {
        return product;
    }
}
